package com.lancoo.ccas53.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lancoo.ccas53.entity.Teacher;
import com.lancoo.ccas53.pojo.common.PageInfo;
import com.lancoo.ccas53.pojo.dto.TeacherDto;
import com.lancoo.ccas53.pojo.vo.AllScheduleVo;
import com.lancoo.ccas53.pojo.vo.TeacherCourseInput;
import com.lancoo.ccas53.pojo.vo.TeacherCourseVo;
import com.lancoo.ccas53.pojo.vo.TeacherGroupTree;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 教师 服务类
 * </p>
 *
 * @author quin.song
 * @since 2024-05-20
 */
public interface TeacherService extends IService<Teacher> {

    void syncBaseTeachers(Integer taskId, String schoolId);

    /**
     * 获取教师信息设置列表
     *
     * @param page
     * @param taskId
     * @param campusId
     * @param basCollegeId
     * @param identity
     * @param isCampusCross
     * @param keyword
     * @param courseId
     * @return
     */
    PageInfo<TeacherCourseVo> getTeacherCourseList(Page page, Integer taskId, Integer campusId, String basCollegeId, Integer identity, Integer isCampusCross, String keyword, Long courseId);

    /**
     * 复制上学期设置
     *
     * @param taskId
     * @return
     */
    String copyTermSetting(Integer taskId, Integer flag);

    /**
     * 批量设置教师信息
     *
     * @param teacherCourseInput
     * @return
     */
    Boolean setTeacherCourseList(TeacherCourseInput teacherCourseInput);

    /**
     * 清空教师信息设置
     *
     * @param taskId
     * @return
     */
    Boolean clearTeacherCourseList(Integer taskId);

    /**
     * 根据教学班获取老师
     *
     * @param teachingClassIds
     * @return
     */
    List<TeacherDto> getTeacherByTeachingClassIds(List<Long> teachingClassIds);

    List<Teacher> getTeacherByTeachingClassIdsArrange(List<Long> teachingClassIds);

    List<TeacherGroupTree> getTeacherTree(Integer taskId, String schoolId, String term, String baseCollegeId, Integer module, String keyword);

    IPage<AllScheduleVo> getAllTeacherPage(Page<AllScheduleVo> page, Integer taskId, String collegeId, String keyword);


    void importTeacherInformationSettings(HttpServletResponse response, Integer taskId, Integer flag, MultipartFile file);

    List<Teacher> getSimpleInfo(Integer taskId);

}
